/**
 * @file gestiondesmessages.h
 * @author Florian Castellane <florian.castellane@grenoble-inp.org>
 * @author Christian Proust <christian.proust@phelma.grenoble-inp.fr>
 * @date Tue Sep 25 23:24:30 2012
 * @brief En-tête des fonctions de gestion des messages.
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// #include <setjmp.h>


// Affiche un message dans le fichier de journalisation.
// on ne peut pas passer de liste d'arguments a une fonction donc on utilise un define et
// le préprocesseur s'occupe de définir les fonctions pour le nombre d'arguments qu'on fournit

#define gestiondesmessages_ecritmessage(n, ...) \
    do { \
        gestiondesmessages_ecritdebutligne(n); \
        gestiondesmessages_ecriretexte(n, __VA_ARGS__); \
    } while (0)

// Niveaux d'erreur
typedef enum
{
    NIVEAU_DEBUG,   // Débug
    NIVEAU_NOTE,    // Informations
    NIVEAU_WARNING, // Avertissement
    NIVEAU_ERROR,   // Erreur fatale
} NIVEAUERREUR;

// Codes d'erreur
typedef enum
{
    /// Attention modifier la fonction source/gestiondesmessages>traduiterreur() a chaque modification
    ERREUR_PASDERREUR,  // 00   aucune erreur :)
    ERREUR_MEM,         // 01   erreur d'allocation
    ERREUR_FOPEN,       // 02   erreur d'ouverture fichier
    ERREUR_FCLOSE,      // 03   erreur de fermeture fichier
    ERREUR_PARAM,       // 04   erreur de passage en paramètre
    NOMBRE_CODES_ERREUR,// 05   dernier element de la liste = nombre d'erreurs différentes
}   CODEERREUR;         // 06   il y a 6 differents types d'erreurs



/// En-têtes

int journalisation_initialisation(const char* nomdefichier);
int journalisation_fermeture(void);
